home *** CD-ROM | disk | FTP | other *** search
- #include <extender.h>
- #include <quickdraw.h>
- #include "ssgSCSI.h"
-
- EventRecord event; /* event record structure instance */
- EventStuff whatHappened; /* event detail structure instance */
- MenuHandle appleMenu,fileMenu,editMenu;/* handles for standard menus */
- MenuHandle cmdMenu,optMenu,idMenu; /* handles for SCSI menus */
- int scuzzID = 4; /* default SCSI ID being tested */
-
- main()
- {
- int i;
- cmp = (unsigned char *)NewPtr((long)SIZE);
-
- XTendInit(); /* Extender initialization routine */
- /* StdMenus(&appleMenu,&fileMenu,&editMenu); /* set up standard menus */
- /* build two customized menus */
- printf("welcome to the wonderful world of SCSIcmd!\n");
-
- cmdMenu = BuildMenu(20,"\PSCSIcmds","\PReset;Get;Select;Test unit ready;Request sense;Read;Write;Inquiry;Load-Unload;Read capacity;Read header;Write header");
- optMenu = BuildMenu(21,"\POptions","\PScan SCSI bus;Find tape drive");
- idMenu = BuildMenu(22,"\PSCSI ID#","\P0 - often internal hard disk;1;2;3;4;5;6;(7 - the Mac itself;(-;Verbose mode");
- CheckItem(idMenu,5,1); /* Check default scsi id (4) */
-
- for (i=0;i<SIZE;i++)
- dat[i] = 0;
-
- do { /* repeat until program terminates */
- do { /* repeat until an event occurs */
- SystemTask(); /* allow for DA handling */
- } while (!XTGetNextEvent(everyEvent,&event));
- HandleEvent(&event,&whatHappened); /* get event info */
-
- if (whatHappened.MenuNum > 0) /* if user selected a menu item */
- CMDMenu(&whatHappened); /* handle the menu item selection */
-
- } while (ExitRequest(&whatHappened) == FALSE);
- SCSIReset();
- }
-
- int CMDMenu(ES) /* handles menu item selections */
- EventStuff *ES;
- {
- int i;
- int drvList[maxDrvs];
-
- switch(ES->MenuNum) {
- case 20: /* SCSI command menu is selected */
- switch(ES->ItemNum) {
- case 1: /* SCSI reset command selected */
- SCSIReset();
- break;
- case 2: /* SCSI get command selected */
- SCSIGet();
- break;
- case 3: /* SCSI select command selected */
- SCSISelect(scuzzID);
- break;
- case 4: /* SCSI Test unit ready selected */
- gSC_unitReady(scuzzID);
- break;
- case 5: /* SCSI Request sense selected */
- gSC_reqSense(scuzzID);
- break;
- case 6: /* SCSI read command selected */
- /*gSC_read(scuzzID);*/
- break;
- case 7: /* SCSI write command selected */
- /*gSC_write(scuzzID);*/
- break;
- case 8: /* SCSI Inquiry command selected */
- gSC_inquire(scuzzID);
- break;
- case 9: /* SCSI Load/Unload command selected */
- gSC_loadUnload(scuzzID);
- break;
- case 10: /* SCSI Read capacity command selected */
- /*gSC_rdCapacity(scuzzID);*/
- break;
- }
- break;
- case 21: /* SCSI option menu is selected */
- switch(ES->ItemNum) {
- case 1: /* scan SCSI bus selected */
- gSC_scan(drvList,maxDrvs);
- dump_drvList(drvList,maxDrvs);
- break;
- case 2: /* find tape drive selected */
- printf("the tape drive is SCSI ID: %d\n",gSC_findTape(maxDrvs));
- break;
- }
- break;
- case 22:
- switch (ES->ItemNum) {
- case 1:
- scuzzID = 0;
- break;
- case 2:
- scuzzID = 1;
- break;
- case 3:
- scuzzID = 2;
- break;
- case 4:
- scuzzID = 3;
- break;
- case 5:
- scuzzID = 4;
- break;
- case 6:
- scuzzID = 5;
- break;
- case 7:
- scuzzID = 6;
- break;
- case 10:
- if (verbose == 0)
- verbose = 1;
- else
- verbose = 0;
- break;
- }
- if (ES->ItemNum < 10)
- ChckItem(ES->MenuH,ES->ItemNum);
- break;
- }
- }
-
- int ChckItem(EMenu,item)
- MenuHandle EMenu;
- int item;
- {
- int Eitemcount,i;
- char EItembuff[256];
-
- if (!ValidHandle((Handle)EMenu))
- RETURN;
-
- Eitemcount = CountMItems(EMenu);
-
- for (i=0; i<=Eitemcount; i++) {
- CheckItem(EMenu,i,0);
- }
- CheckItem(EMenu,item,1);
- }
-
-